home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_weap_machete.cog < prev    next >
Text File  |  1999-11-15  |  6KB  |  293 lines

  1. # Jones 3D Cog Script
  2. #
  3. # weap_Machete.cog
  4. #
  5. # This COG controls Indy's machette
  6. #
  7. # [RandyT]
  8. #
  9. # (C) 1998 LucasArts Entertainment Company LLC. All Rights Reserved
  10. #
  11. # ===================================================================
  12.  
  13. symbols
  14.  
  15. message        startup
  16. message        fire
  17. message        activated
  18. message        deactivated
  19. message        selected
  20. message        deselected
  21. message        callback
  22.  
  23. sound        schwing=gen_machete_fire.wav    local    # Autoloaded
  24. sound        gurgle=gen_machete_fire_uw.wav    local    # Autoloaded
  25. sound        kersplash=riv_splash_sm.wav        local    # Autoloaded
  26. sound        pull=gen_machete_pull.wav        local    # Autoloaded
  27. sound        put=gen_machete_put.wav            local    # Autoloaded
  28. sound        pullWet=gen_machete_pull_uw.wav    local    # Autoloaded
  29. sound        putWet=gen_machete_put_uw.wav    local    # Autoloaded
  30.  
  31. template    projectile=+machete                local    # Autoloaded
  32.  
  33. thing        player                            local
  34.  
  35. int            holsterMesh                        local
  36. int            weaponNum=7                        local
  37. int            fireMode                        local
  38. int            fireSound                        local
  39. int            pullMode                        local
  40. int            putMode                            local
  41. int            callNum                            local
  42.  
  43. int            bSwimming=0                        local
  44. int            bUnderwater=0                    local
  45.  
  46. int            playerType=0                    local    # 0 = Shirt Indy, 1 = Jacket Indy, 2 = Guybrush
  47.  
  48. end
  49.  
  50. # ===================================================================
  51.  
  52. code
  53.  
  54. startup:
  55.  
  56.     player = GetLocalPlayerThing();
  57.     holsterMesh = GetMeshByName(player, "intorso");
  58.  
  59.     if (IsThingModelName(player, "gen_in_shirt.3do"))
  60.     {
  61.         LoadHolsterModel(weaponNum, "torso_shirt_machete.3do");
  62.         playerType = 0;
  63.     }
  64.     else if (IsThingModelName(player, "gen_in.3do"))
  65.     {
  66.         LoadHolsterModel(weaponNum, "torso_shirt_machete.3do");
  67.         playerType = 1;
  68.     }
  69.     else
  70.     {
  71.         LoadHolsterModel(weaponNum, "torso_guy_machete.3do");
  72.         playerType = 2;
  73.     }
  74.  
  75.     if (GetLastRifle(player) == weaponNum)
  76.     {
  77.         SetHolsterModel(player, weaponNum, holsterMesh);
  78.     }
  79.     
  80.     if (GetSenderRef() == 9999) # Call is from Guybrush cheat...
  81.     {
  82.         if (GetCurWeapon(player) == weaponNum)
  83.         {
  84.             if (playerType == 0)
  85.             {
  86.                 LoadHolsterModel(weaponNum, "torso_shirt_sheath.3do");
  87.             }
  88.             else if (playerType == 1)
  89.             {
  90.                 LoadHolsterModel(weaponNum, "torso_in_sheath.3do");
  91.             }
  92.             else
  93.             {
  94.                 LoadHolsterModel(weaponNum, "torso_guy_sheath.3do");
  95.             }
  96.             SetHolsterModel(player, weaponNum, holsterMesh);
  97.         }
  98.     }
  99.  
  100.     return;
  101.  
  102. # -------------------------------------------------------------------
  103.  
  104. fire:
  105.  
  106.     # If the message is from the weapons system, play the animation
  107.     if (GetParam(0) != -1)
  108.     {
  109.         bSwimming = BitTest(GetThingFlags(player), 0x2000000);
  110.         bUnderwater = !BitTest(GetPhysicsFlags(player), 0x100000);
  111.  
  112.         if (bSwimming)
  113.         {
  114.             if (bUnderwater)
  115.             {
  116.                 fireMode = 68;
  117.                 fireSound = gurgle;
  118.                 SetFireWait(player, 1.73);
  119.             }
  120.             else
  121.             {
  122.                 fireMode = 66;
  123.                 fireSound = kersplash;
  124.                 SetFireWait(player, 1.22);
  125.             }
  126.         }
  127.         else
  128.         {
  129.             if (Rand() > 0.35)
  130.                 fireMode = 65;
  131.             else
  132.                 fireMode = 66;
  133.  
  134.             fireSound = schwing;
  135.             SetFireWait(player, 0.97);
  136.         }
  137.         
  138.         CaptureThing(player);
  139.         while (PlayMode(player, fireMode, 0) == -99)
  140.         {
  141.             Sleep(0.01);
  142.         }
  143.         
  144.         return;
  145.     }
  146.  
  147.     # Actual firing takes place when we get the callback...
  148.     FireProjectile(player, projectile, -1, -1, GetThingPos(player), '0 0 0', 1.0, 0x0, 0.0, 0.0);
  149.  
  150.     return;
  151.  
  152. # -------------------------------------------------------------------
  153.  
  154. activated:
  155.  
  156.     ActivateWeapon(player, 0.01);
  157.  
  158.     return;
  159.  
  160. # -------------------------------------------------------------------
  161.  
  162. deactivated:
  163.  
  164.     DeactivateWeapon(player);
  165.  
  166.     return;
  167.  
  168. # -------------------------------------------------------------------
  169.  
  170. selected:
  171.  
  172.     bSwimming = BitTest(GetThingFlags(player), 0x2000000);
  173.     bUnderwater = !BitTest(GetPhysicsFlags(player), 0x100000);
  174.  
  175.     SetAimWait(player, 0.0);
  176.     if (bSwimming && bUnderwater)
  177.     {
  178.         SetMountWait(player, 1.067);
  179.         pullMode = 63;
  180.     }
  181.     else
  182.     {
  183.         SetMountWait(player, 0.8);
  184.         pullMode = 62;
  185.     }
  186.     
  187.     SetArmedMode(player, 7);
  188.     SetCurWeapon(player, weaponNum);
  189.     SetThingFireOffset(player, '0.0 0.0 0.0');
  190.  
  191.     CaptureThing(player);
  192.     PlayMode(player, pullMode, 0);
  193.  
  194.     return;
  195.  
  196. # -------------------------------------------------------------------
  197.  
  198. deselected:
  199.  
  200.     bSwimming = BitTest(GetThingFlags(player), 0x2000000);
  201.     bUnderwater = !BitTest(GetPhysicsFlags(player), 0x100000);
  202.  
  203.     if (bSwimming && bUnderwater)
  204.     {
  205.         SetMountWait(player, 1.2);
  206.         putMode = 65;
  207.     }
  208.     else
  209.     {
  210.         SetMountWait(player, 0.967);
  211.         putMode = 64;
  212.     }
  213.  
  214.     StopMode(player, pullMode, 0);
  215.     CaptureThing(player);
  216.     PlayMode(player, putMode, 0);
  217.  
  218.     SetArmedMode(player, 0);
  219.  
  220.     return;
  221.  
  222. # -------------------------------------------------------------------
  223.  
  224. callback:
  225.  
  226.     callNum = GetParam(1);
  227.  
  228.     if (callNum == 28)
  229.     {
  230.         ReleaseThing(player);
  231.  
  232.         if (playerType == 0)
  233.         {
  234.             LoadHolsterModel(weaponNum, "torso_shirt_sheath.3do");
  235.         }
  236.         else if (playerType == 1)
  237.         {
  238.             LoadHolsterModel(weaponNum, "torso_in_sheath.3do");
  239.         }
  240.         else
  241.         {
  242.             LoadHolsterModel(weaponNum, "torso_guy_sheath.3do");
  243.         }
  244.  
  245.         if (bSwimming && bUnderwater)
  246.         {
  247.             PlaySoundThing(pullWet, player, 1, -1, -1, 0x880);
  248.         }
  249.         else
  250.         {
  251.             PlaySoundThing(pull, player, 1, -1, -1, 0x880);
  252.         }
  253.         
  254.         SetHolsterModel(player, weaponNum, holsterMesh);
  255.         SetWeaponModel(player, weaponNum);
  256.     }
  257.     else if (callNum == 29)
  258.     {
  259.         ReleaseThing(player);
  260.  
  261.         if (playerType == 0)
  262.         {
  263.             LoadHolsterModel(weaponNum, "torso_shirt_machete.3do");
  264.         }
  265.         else if (playerType == 1)
  266.         {
  267.             LoadHolsterModel(weaponNum, "torso_in_machete.3do");
  268.         }
  269.         else
  270.         {
  271.             LoadHolsterModel(weaponNum, "torso_guy_machete.3do");
  272.         }
  273.  
  274.         if (bSwimming && bUnderwater)
  275.         {
  276.             PlaySoundThing(putWet, player, 1, -1, -1, 0x880);
  277.         }
  278.         else
  279.         {
  280.             PlaySoundThing(put, player, 1, -1, -1, 0x880);
  281.         }
  282.  
  283.         SetHolsterModel(player, weaponNum, holsterMesh);
  284.         ResetWeaponModel(player);
  285.     }
  286.     else if (callNum == 30)
  287.     {
  288.         PlaySoundThing(fireSound, player, 1, -1, -1, 0x880);
  289.     }
  290.  
  291.     return;
  292.  
  293. end